// var express = require('express');
// var router = express.Router();
// var db = require('../mysql/db');
// const OpenAI = require("openai");

// const openai = new OpenAI({ 
//   apiKey: "sk-35abe5812cf0451a88d36acc02162396",
//   baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1", 
// });

// // 生成订单号函数
// function generateOrderNumber() {
//   const prefix = "ZWNLN";
//   const timestamp = Date.now();
//   const randomNum = Math.floor(1000 + Math.random() * 9000);
//   const numberPart = `${timestamp}${randomNum}`;
//   return `${prefix}${numberPart}`;
// }

// // 格式化当前时间为 YYYY-MM-DD HH:mm:ss
// function formatDateTime(date) {
//   const year = date.getFullYear();
//   const month = String(date.getMonth() + 1).padStart(2, '0');
//   const day = String(date.getDate()).padStart(2, '0');
//   const hours = String(date.getHours()).padStart(2, '0');
//   const minutes = String(date.getMinutes()).padStart(2, '0');
//   const seconds = String(date.getSeconds()).padStart(2, '0');
//   return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
// }

// // C 端：运势测算接口
// router.post("/api/ask", async (req, res) => {
//     const { name, gender, birthYear, birthMonth, birthDay, birthHour, type } = req.body;
//     if (!name || !gender || !birthYear || !birthMonth || !birthDay) {
//       return res.status(400).json({ error: "请提供完整的个人信息" });
//     }
  
//     const question = `
//       我是一个用户，以下是我的个人信息：
//       姓名：${name}
//       性别：${gender}
//       出生日期：${birthYear}年${birthMonth}月${birthDay}日
//       出生时辰：${birthHour}
  
//       请根据我的生辰八字和个人信息，给我一个详细的2025年运势测算，包含以下方面：
//       1. 五行分析：我的生日五行和大限五行（2025年的五行运势）。
//       2. 事业运势：2025年的事业发展情况，按春夏秋冬四个季节分析。
//       3. 姻缘运势：2025年的感情运势，单身和有伴侣的情况都要分析，按季节分析。
//       4. 财运：2025年的财运情况，包括正财和偏财，按季节分析。
//       5. 健康运势：2025年的健康状况，注意事项，按季节分析。
//       6. 人际关系运势：2025年的人际交往情况，按季节分析。
//       7. 家庭运势：2025年的家庭关系和亲情运势，按季节分析。
//       8. 学业/进修运势：2025年的学习和自我提升运势，按季节分析。
//       9. 贵人运势：2025年的贵人运和外部助力情况，按季节分析。
//       10. 禁忌建议：根据我的五行属性，给出2025年需要注意的禁忌和建议，例如宜接触的事物、避免的环境等。
  
//       请确保每个方面的分析都详细且具体，包含按季节的变化趋势和具体建议。
//     `;
  
//     try {
//       // 生成订单信息
//       const orderNumber = generateOrderNumber();
//       const orderTime = formatDateTime(new Date());
//       const username = name;
//       const amount = 99.99;
//       const status = "未支付";

//       // 插入订单
//       const insertOrderQuery = "INSERT INTO orders (order_number, username, order_time, amount, status) VALUES (?, ?, ?, ?, ?)";
//       db.query(insertOrderQuery, [orderNumber, username, orderTime, amount, status], (err) => {
//         if (err) {
//           console.error("Error creating order:", err);
//         } else {
//           console.log(`Order created: ${orderNumber} for user ${username}`);
//         }
//       });

//       // 检查用户是否已存在，若不存在则插入 users 表
//       const checkUserQuery = "SELECT * FROM users WHERE username = ?";
//       db.query(checkUserQuery, [username], (err, results) => {
//         if (err) {
//           console.error("Error checking user:", err);
//           return;
//         }
//         if (results.length === 0) {
//           const insertUserQuery = "INSERT INTO users (username, password, role, created_at) VALUES (?, ?, ?, ?)";
//           db.query(insertUserQuery, [username, 'default_password', 'user', orderTime], (err) => {
//             if (err) console.error("Error inserting user:", err);
//           });
//         }
//       });

//       // 调用 AI 接口
//       const completion = await openai.chat.completions.create({
//         model: "qwen-plus",
//         messages: [
//           { role: "system", content: "你是一个专业的八字算命大师..." },
//           { role: "user", content: question },
//         ],
//       });
  
//       const aiAnswer = completion.choices[0]?.message?.content || "未收到有效回复";

//       // 保存测算记录
//       const insertFortuneQuery = "INSERT INTO user_fortunes (username, birth_year, birth_month, birth_day, birth_hour, fortune_type, fortune_data, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
//       db.query(insertFortuneQuery, [name, birthYear, birthMonth, birthDay, birthHour, type || "八字测算", aiAnswer, orderTime], (err) => {
//         if (err) console.error("Error saving fortune:", err);
//       });

//       res.json({ answer: aiAnswer, orderNumber });
//     } catch (error) {
//       console.error("AI 接口错误:", error);
//       const status = error.status || 500;
//       const details = error.code === "insufficient_quota" ? "API 限额已用尽" : error.message;
//       res.status(status).json({ error: "AI 处理出错", details });
//     }
// });

// // B 端：订单统计数据
// router.get("/api/stats/orders", (req, res) => {
//     const { startDate, endDate } = req.query;

//     let queryParams = [];
//     let dateCondition = "";
//     if (startDate && endDate) {
//         dateCondition = "WHERE order_time BETWEEN ? AND ?";
//         queryParams = [startDate, endDate];
//     }

//     const totalQuery = `SELECT COUNT(*) as total FROM orders ${dateCondition}`;
//     const statusQuery = `SELECT status, COUNT(*) as count FROM orders ${dateCondition} GROUP BY status`;
//     const trendQuery = `SELECT DATE(order_time) as date, COUNT(*) as count FROM orders ${dateCondition} GROUP BY DATE(order_time) ORDER BY date`;

//     Promise.all([
//         new Promise((resolve, reject) => {
//             db.query(totalQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results[0].total);
//             });
//         }),
//         new Promise((resolve, reject) => {
//             db.query(statusQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results);
//             });
//         }),
//         new Promise((resolve, reject) => {
//             db.query(trendQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results);
//             });
//         })
//     ])
//     .then(([total, statusDistribution, trend]) => {
//         res.json({
//             total,
//             statusDistribution,
//             trend
//         });
//     })
//     .catch(err => {
//         console.error("Error fetching order stats:", err);
//         res.status(500).json({ error: "Failed to fetch order stats" });
//     });
// });

// // B 端：测算统计数据
// router.get("/api/stats/fortunes", (req, res) => {
//     const { startDate, endDate } = req.query;

//     let queryParams = [];
//     let dateCondition = "";
//     if (startDate && endDate) {
//         dateCondition = "WHERE created_at BETWEEN ? AND ?";
//         queryParams = [startDate, endDate];
//     }

//     const totalQuery = `SELECT COUNT(*) as total FROM user_fortunes ${dateCondition}`;
//     const typeQuery = `SELECT fortune_type, COUNT(*) as count FROM user_fortunes ${dateCondition} GROUP BY fortune_type`;
//     const trendQuery = `SELECT DATE(created_at) as date, COUNT(*) as count FROM user_fortunes ${dateCondition} GROUP BY DATE(created_at) ORDER BY date`;

//     Promise.all([
//         new Promise((resolve, reject) => {
//             db.query(totalQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results[0].total);
//             });
//         }),
//         new Promise((resolve, reject) => {
//             db.query(typeQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results);
//             });
//         }),
//         new Promise((resolve, reject) => {
//             db.query(trendQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results);
//             });
//         })
//     ])
//     .then(([total, typeDistribution, trend]) => {
//         res.json({
//             total,
//             typeDistribution,
//             trend
//         });
//     })
//     .catch(err => {
//         console.error("Error fetching fortune stats:", err);
//         res.status(500).json({ error: "Failed to fetch fortune stats" });
//     });
// });

// // B 端：用户统计数据
// router.get("/api/stats/users", (req, res) => {
//     const { startDate, endDate } = req.query;

//     let queryParams = [];
//     let dateCondition = "";
//     if (startDate && endDate) {
//         dateCondition = "WHERE created_at BETWEEN ? AND ?";
//         queryParams = [startDate, endDate];
//     }

//     const totalQuery = `SELECT COUNT(*) as total FROM users ${dateCondition}`;
//     const activeQuery = `SELECT COUNT(*) as active FROM users WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)`;
//     const trendQuery = `SELECT DATE(created_at) as date, COUNT(*) as count FROM users ${dateCondition} GROUP BY DATE(created_at) ORDER BY date`;

//     Promise.all([
//         new Promise((resolve, reject) => {
//             db.query(totalQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results[0].total);
//             });
//         }),
//         new Promise((resolve, reject) => {
//             db.query(activeQuery, [], (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results[0].active);
//             });
//         }),
//         new Promise((resolve, reject) => {
//             db.query(trendQuery, queryParams, (err, results) => {
//                 if (err) return reject(err);
//                 resolve(results);
//             });
//         })
//     ])
//     .then(([total, activeUsers, trend]) => {
//         res.json({
//             total,
//             activeUsers,
//             trend
//         });
//     })
//     .catch(err => {
//         console.error("Error fetching user stats:", err);
//         res.status(500).json({ error: "Failed to fetch user stats" });
//     });
// });

// // B 端：获取测算记录列表
// router.get("/api/fortunes", (req, res) => {
//     const { fortune_type, startDate, endDate } = req.query;

//     let query = "SELECT * FROM user_fortunes";
//     let queryParams = [];
//     let conditions = [];

//     if (fortune_type && fortune_type !== "全部") {
//         conditions.push("fortune_type = ?");
//         queryParams.push(fortune_type);
//     }

//     if (startDate && endDate) {
//         conditions.push("created_at BETWEEN ? AND ?");
//         queryParams.push(startDate, endDate);
//     }

//     if (conditions.length > 0) {
//         query += " WHERE " + conditions.join(" AND ");
//     }

//     query += " ORDER BY created_at DESC";

//     db.query(query, queryParams, (err, results) => {
//         if (err) {
//             console.error("Error fetching fortunes:", err);
//             res.status(500).json({ error: "Failed to fetch fortunes" });
//             return;
//         }
//         res.json(results);
//     });
// });

// // B 端：获取用户列表
// router.get("/api/users", (req, res) => {
//     const query = `
//         SELECT 
//             id,
//             username,
//             role,
//             created_at
//         FROM users
//         ORDER BY created_at DESC
//     `;

//     db.query(query, (err, results) => {
//         if (err) {
//             console.error("Error fetching users:", err);
//             res.status(500).json({ error: "Failed to fetch users" });
//             return;
//         }
//         res.json(results);
//     });
// });

// // B 端：添加用户
// router.post("/api/users", (req, res) => {
//     const { username, password, role } = req.body;
//     if (!username || !password || !role) {
//       return res.status(400).json({ error: "缺少必要字段" });
//     }

//     const created_at = formatDateTime(new Date());
//     const query = "INSERT INTO users (username, password, role, created_at) VALUES (?, ?, ?, ?)";
//     db.query(query, [username, password, role, created_at], (err, result) => {
//       if (err) {
//         console.error("Error creating user:", err);
//         res.status(500).json({ error: "Failed to create user" });
//         return;
//       }
//       res.json({ id: result.insertId, username, password, role, created_at });
//     });
// });

// // B 端：更新用户
// router.put("/api/users/:id", (req, res) => {
//     const { id } = req.params;
//     const { username, password, role } = req.body;
//     if (!username || !password || !role) {
//       return res.status(400).json({ error: "缺少必要字段" });
//     }

//     const query = "UPDATE users SET username = ?, password = ?, role = ? WHERE id = ?";
//     db.query(query, [username, password, role, id], (err) => {
//       if (err) {
//         console.error("Error updating user:", err);
//         res.status(500).json({ error: "Failed to update user" });
//         return;
//       }
//       res.json({ message: "User updated successfully" });
//     });
// });

// // B 端：删除用户
// router.delete("/api/users/:id", (req, res) => {
//     const { id } = req.params;
//     const query = "DELETE FROM users WHERE id = ?";
//     db.query(query, [id], (err) => {
//       if (err) {
//         console.error("Error deleting user:", err);
//         res.status(500).json({ error: "Failed to delete user" });
//         return;
//       }
//       res.json({ message: "User deleted successfully" });
//     });
// });

// // C 端 & B 端：获取订单列表
// router.get("/api/orders", (req, res) => {
//     const { status, order_number } = req.query;

//     let query = "SELECT * FROM orders";
//     let queryParams = [];
//     let conditions = [];

//     if (status && status !== "全部") {
//         if (status === "待支付") {
//             conditions.push("status = ?");
//             queryParams.push("未支付");
//         } else if (status === "已支付") {
//             conditions.push("status = ?");
//             queryParams.push("已支付");
//         }
//     }

//     if (order_number) {
//         conditions.push("order_number = ?");
//         queryParams.push(order_number);
//     }

//     if (conditions.length > 0) {
//         query += " WHERE " + conditions.join(" AND ");
//     }

//     query += " ORDER BY order_time DESC";

//     db.query(query, queryParams, (err, results) => {
//       if (err) {
//         console.error("Error fetching orders:", err);
//         res.status(500).json({ error: "Failed to fetch orders" });
//         return;
//       }
//       res.json(results);
//     });
// });

// // B 端：创建订单
// router.post("/api/orders", (req, res) => {
//     const { username, order_time, amount, status } = req.body;
//     if (!username || !order_time || !amount || !status) {
//       return res.status(400).json({ error: "缺少必要字段" });
//     }
    
//     const order_number = generateOrderNumber();
    
//     const query = "INSERT INTO orders (order_number, username, order_time, amount, status) VALUES (?, ?, ?, ?, ?)";
//     db.query(query, [order_number, username, order_time, amount, status], (err, result) => {
//       if (err) {
//         console.error("Error creating order:", err);
//         res.status(500).json({ error: "Failed to create order" });
//         return;
//       }
//       res.json({ id: result.insertId, order_number, username, order_time, amount, status });
//     });
// });

// // B 端：删除订单
// router.delete("/api/orders/:id", (req, res) => {
//     const { id } = req.params;
//     const query = "DELETE FROM orders WHERE id = ?";
//     db.query(query, [id], (err) => {
//       if (err) {
//         console.error("Error deleting order:", err);
//         res.status(500).json({ error: "Failed to delete order" });
//         return;
//       }
//       res.json({ message: "Order deleted successfully" });
//     });
// });    

// // B 端：更新订单
// router.put("/api/orders/:id", (req, res) => {
//     const { id } = req.params;
//     const { status } = req.body;
//     const query = "UPDATE orders SET status = ? WHERE id = ?";
//     db.query(query, [status, id], (err) => {
//       if (err) {
//         console.error("Error updating order:", err);
//         res.status(500).json({ error: "Failed to update order" });
//         return;
//       }
//       res.json({ message: "Order updated successfully" });
//     });
// });

// module.exports = router;

















// var express = require('express');
// var router = express.Router();
// var db = require('../mysql/db')
// const OpenAI = require("openai");
// const punycode = require("punycode/"); 
// const openai = new OpenAI({ apiKey: "sk-35abe5812cf0451a88d36acc02162396",
//     baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1", });

// router.post("/api/ask", async (req, res) => {
//     const { name, gender, birthYear, birthMonth, birthDay, birthHour } = req.body;
//     if (!name || !gender || !birthYear || !birthMonth || !birthDay) {
//       return res.status(400).json({ error: "请提供完整的个人信息" });
//     }
  
//     const question = `
//       我是一个用户，以下是我的个人信息：
//       姓名：${name}
//       性别：${gender}
//       出生日期：${birthYear}年${birthMonth}月${birthDay}日
//       出生时辰：${birthHour}
  
//       请根据我的生辰八字和个人信息，给我一个详细的2025年运势测算，包含以下方面：
//       1. 五行分析：我的生日五行和大限五行（2025年的五行运势）。
//       2. 事业运势：2025年的事业发展情况，按春夏秋冬四个季节分析。
//       3. 姻缘运势：2025年的感情运势，单身和有伴侣的情况都要分析，按季节分析。
//       4. 财运：2025年的财运情况，包括正财和偏财，按季节分析。
//       5. 健康运势：2025年的健康状况，注意事项，按季节分析。
//       6. 人际关系运势：2025年的人际交往情况，按季节分析。
//       7. 家庭运势：2025年的家庭关系和亲情运势，按季节分析。
//       8. 学业/进修运势：2025年的学习和自我提升运势，按季节分析。
//       9. 贵人运势：2025年的贵人运和外部助力情况，按季节分析。
//       10. 禁忌建议：根据我的五行属性，给出2025年需要注意的禁忌和建议，例如宜接触的事物、避免的环境等。
  
//       请确保每个方面的分析都详细且具体，包含按季节的变化趋势和具体建议。
//     `;
  
//     try {
//       const completion = await openai.chat.completions.create({
//         model: "qwen-plus",
//         messages: [
//           { role: "system", content: "你是一个专业的八字算命大师，擅长根据用户的生辰八字和个人信息进行运势测算。" },
//           { role: "user", content: question },
//         ],
//       });
  
//       const aiAnswer = completion.choices[0]?.message?.content || "未收到有效回复";
//       res.json({ answer: aiAnswer });
//     } catch (error) {
//       console.error("AI 接口错误:", error);
//       const status = error.status || 500;
//       const details = error.code === "insufficient_quota" ? "API 限额已用尽" : error.message;
//       res.status(status).json({ error: "AI 处理出错", details });
//     }
//   });
// router.post("/api/orders", (req, res) => {
//     const { order_number, username, order_time, amount, status } = req.body;
//     const query =
//       "INSERT INTO orders (order_number, username, order_time, amount, status) VALUES (?, ?, ?, ?, ?)";
//     db.query(query, [order_number, username, order_time, amount, status], (err, result) => {
//       if (err) {
//         console.error("Error creating order:", err);
//         res.status(500).json({ error: "Failed to create order" });
//         return;
//       }
//       res.json({ id: result.insertId, ...req.body });
//     });
//   });
// router.get("/api/orders", (req, res) => {
//     const { status, order_number } = req.query;
//     console.log("Received status:", status); // 添加日志
//     console.log("Received order_number:", order_number);
  
//     let query = "SELECT * FROM orders";
//     let queryParams = [];
//     let conditions = [];
  
//     // 修正 status 处理逻辑，确保映射正确
//     if (status && status !== "全部") {
//       if (status === "待支付") {
//         conditions.push("status = ?");
//         queryParams.push("未支付");
//       } else if (status === "已支付") {
//         conditions.push("status = ?");
//         queryParams.push("已支付");
//       }
//       // 如果 status 是其他值，不添加条件
//     }
  
//     if (order_number) {
//       conditions.push("order_number = ?");
//       queryParams.push(order_number);
//     }
  
//     if (conditions.length > 0) {
//       query += " WHERE " + conditions.join(" AND ");
//     }
  
//     console.log("Executing query:", query, "with params:", queryParams); // 添加日志
  
//     db.query(query, queryParams, (err, results) => {
//       if (err) {
//         console.error("Error fetching orders:", err);
//         res.status(500).json({ error: "Failed to fetch orders" });
//         return;
//       }
//       console.log("Query results:", results); // 添加日志
//       res.json(results);
//     });
//   });
// router.delete("/api/orders/:id", (req, res) => {
//     const { id } = req.params;
//     const query = "DELETE FROM orders WHERE id = ?";
//     db.query(query, [id], (err) => {
//       if (err) {
//         console.error("Error deleting order:", err);
//         res.status(500).json({ error: "Failed to delete order" });
//         return;
//       }
//       res.json({ message: "Order deleted successfully" });
//     });
//   });    
// router.put("/api/orders/:id", (req, res) => {
//     const { id } = req.params;
//     const { status } = req.body;
//     const query = "UPDATE orders SET status = ? WHERE id = ?";
//     db.query(query, [status, id], (err) => {
//       if (err) {
//         console.error("Error updating order:", err);
//         res.status(500).json({ error: "Failed to update order" });
//         return;
//       }
//       res.json({ message: "Order updated successfully" });
//     });
//   });




  
// router.get('/list', async (req, res) => {
//     let id = req.query.id
//     let obj = []
//     if (id) {
//         obj = await db.query('select * from user where id=?', [id])
//     } else {
//         obj = await db.query('select * from user  ')
//     }
//     let list = obj[0]
//     res.send({
//         list
//     })
// })

// router.post('/list', async (req, res) => {
//     let body = req.body
//     let lis = []
//     for (let i in body) {
//         lis.push(body[i])
//     }
//     lis = lis.slice(1)
//     try {
        
//         await db.query('insert into user (user,password,role) values (?,?,?)', lis)
//     } catch (err) {
//         console.log('error==', err)
//     }
//     res.send({
//         code: 200,
//         msg: 'post'
//     })
// })

// router.put('/list', async (req, res) => {
//     let id = req.body.id
//     let body = req.body
//     try {
//         await db.query('update user set ? where id = ?', [body, id])
//     } catch (err) {
//         console.log('error==', err)
//     }
//     res.send({
//         code: 200,
//         msg: 'put'
//     })
// })

// router.delete('/list', async (req, res) => {
//     let id = req.query.id
//     try {
//         await db.query('delete from user where id=?', [id])
//     } catch (err) {
//         console.log('error==', err)
//     }
//     res.send({
//         code: 200,
//         msg: 'delete'
//     })
// })
